package xml;

import java.util.HashSet;
import java.util.Set;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import servidor.ListadoPrecios;






public class listaPreciosDAO {
	private static final String ARCHIVO = "listaPrecios.xml";
	private static listaPreciosDAO instancia;
	private Document doc;
	
	public static listaPreciosDAO getInstancia(){
		if(instancia == null){
			instancia = new listaPreciosDAO();
			//instancia.crearDocumento();
		}
		return instancia;
	}
	
	@SuppressWarnings("unused")
	private void crearDocumento(){
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder;
		try {
			builder = factory.newDocumentBuilder();
			doc = builder.parse(ARCHIVO);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
		
	/*public ListadoPrecios getListado(String nombre){
		ListadoPrecios listados = new ListadoPrecios();
		Element root = doc.getDocumentElement();
		NodeList nodos = root.getElementsByTagName("Moneda");
		
		for(int i = 0; i < nodos.getLength(); i++){
			Element elem = (Element)nodos.item(i);
			listados = mapListado(elem);
				
			if(cotizacion.getMoneda().equals(nombre))
					return listado;
			
		}
		return null;
	}*/
	
	

	
	public Set<ListadoPrecios> getListadoPrecios(){
		
		Element root = doc.getDocumentElement();
		Set<ListadoPrecios> listaPrecios = new HashSet<ListadoPrecios>();
		ListadoPrecios l = new ListadoPrecios();
		NodeList nodos = root.getElementsByTagName("ListaPrecios");
		for(int i = 0; i < nodos.getLength(); i++){
			Element prmCon = (Element)nodos.item(i);
			l.setNumero(prmCon.getAttribute("numero"));
			
			
			//listaPrecios.add(mapListado(prmCon));		
		}
		return listaPrecios;
	}
	

	
	
	
//	private Document nuevoDocumento(){
//		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//		DocumentBuilder builder;
//		try {
//			builder = factory.newDocumentBuilder();
//			Document doc = builder.newDocument();
//			return doc;
//		} catch (Exception e) {
//			e.printStackTrace();
//			return null;
//		}
//	}
	
	
	
	/*public Set<Cotizacion> leerElemento(){
		Set<Cotizacion> cotizaciones = new HashSet<Cotizacion>();
		
		Element root = doc.getDocumentElement();
		NodeList prms= root.getElementsByTagName("Moneda");
		for(int i=0; i<prms.getLength(); i++){
			Element prmCon = (Element)prms.item(i);
			Cotizacion cot = new Cotizacion();
			cot.setMoneda(prmCon.getAttribute("Denominacion"));
			cot.setValor(Double.parseDouble(prmCon.getAttribute("Cotizacion")));		
			cotizaciones.add(cot);
			System.out.printf("%nDenominacion: %s",prmCon.getAttribute("Denominacion"));
			System.out.printf("%nCotizacion: %s",prmCon.getAttribute("Cotizacion"));
		}
		return cotizaciones;
	}*/
	
	
	public void leerElementos1(){
		Element raiz = doc.getDocumentElement();
		System.out.println(raiz.getTagName());
		System.out.println("booludos");
		if (raiz.hasChildNodes())
			childNodes(raiz);
	}
	
	public void childNodes(Node nodo){
		NodeList nodos = nodo.getChildNodes();
		for (int i = 0; i < nodos.getLength(); i++){
			Node child = nodos.item(i);
			String valor = (child.getNodeType()==Node.TEXT_NODE?child.getNodeValue():child.getNodeName());
			System.out.println(valor);
		//	System.out.println("joya");
			if(nodos.item(i).hasChildNodes())
				childNodes(nodos.item(i));
		}
	}
	
	
	
	
	
	
	
//	private void aXML(Document doc){
//		try {
//			Transformer transformer = TransformerFactory.newInstance().newTransformer();
//			Source src = new DOMSource(doc);
//			Result dest = new StreamResult(new FileWriter(new File(ARCHIVO)));
//			transformer.transform(src, dest);
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//	}
}
